Install R from here: https://cran.r-project.org/.
Install R Studio Desktop from here: https://www.rstudio.com/products/rstudio/download/#download.
install.packages("readxl")
install.packages("fitdistrplus")
install.packages("stats")
install.packages("actuar")
install.packages("vtable")
install.packages("data.table")
install.packages("dplyr")
install.packages("vioplot")
install.packages("bupaR")
install.packages("processanimateR")library(readxl)
library(fitdistrplus)
library(stats)
library(actuar)
library(vtable)
library(data.table)
library(dplyr)
library(vioplot)
library(bupaR)
library(processanimateR)This filename should match your data location. The log file should have at least the columns named Case ID, Activity, Start Time, End Time.
dataset <- read_excel("C:/Users/Usuario/Desktop/Pastas/Escola/Universidade/Mestrado/1º Semestre/Modelação e Implementação de Processos/Trabalho Grupo/2ª Parte/G17.xlsx")
#colnames(dataset)[which(names(dataset) == "case")] <- "Case ID"
#colnames(dataset)[which(names(dataset) == "event")] <- "Activity"
#colnames(dataset)[which(names(dataset) == "resource")] <- "Resource"
colnames(dataset)[which(names(dataset) == "Start Timestamp")] <- "Start Time"
colnames(dataset)[which(names(dataset) == "Complete Timestamp")] <- "End Time"The Start Time and End Time columns should be formatted accordingly with the proper Date/Time mask present in the log file.
dataset[['Start Time']] <- as.POSIXct(dataset$`Start Time`, format = "%Y-%m-%d %H:%M:%S")
dataset[['End Time']] <- as.POSIXct(dataset$`End Time`, format = "%Y-%m-%d %H:%M:%S")dataset## # A tibble: 6,216 x 6
## `Case ID` Activity `Start Time` `End Time` Resource Role
## <dbl> <chr> <dttm> <dttm> <chr> <chr>
## 1 1 Create Pur~ 2010-12-31 23:00:00 2010-12-31 23:37:00 Kim Passa Requ~
## 2 1 Create Req~ 2011-01-01 04:37:00 2011-01-01 04:45:00 Kim Passa Requ~
## 3 1 Analyze Re~ 2011-01-01 05:41:00 2011-01-01 05:55:00 Karel de~ Purc~
## 4 1 Send Reque~ 2011-01-01 10:43:00 2011-01-01 11:09:00 Karel de~ Purc~
## 5 1 Create Quo~ 2011-01-01 11:32:00 2011-01-01 15:03:00 Magdalen~ Purc~
## 6 1 Analyze Qu~ 2011-01-01 21:44:00 2011-01-01 22:13:00 Immanuel~ Requ~
## 7 1 Choose bes~ 2011-01-01 22:13:00 2011-01-01 22:13:00 Tesca Lo~ Requ~
## 8 1 Settle con~ 2011-01-02 00:22:00 2011-01-02 08:20:00 Francois~ Purc~
## 9 1 Create Pur~ 2011-01-02 08:58:00 2011-01-02 09:10:00 Karel de~ Purc~
## 10 1 Confirm Pu~ 2011-01-02 13:09:00 2011-01-02 13:43:00 Sean Man~ Supp~
## # ... with 6,206 more rows
#This is needed to compute the arrival time between instances/cases
filtered <- dataset[!duplicated(dataset$`Case ID`),]
filtered## # A tibble: 405 x 6
## `Case ID` Activity `Start Time` `End Time` Resource Role
## <dbl> <chr> <dttm> <dttm> <chr> <chr>
## 1 1 Create Pur~ 2010-12-31 23:00:00 2010-12-31 23:37:00 Kim Passa Requ~
## 2 4 Create Pur~ 2011-01-01 07:39:00 2011-01-01 08:00:00 Fjodor K~ Requ~
## 3 5 Create Pur~ 2011-01-01 08:49:00 2011-01-01 09:35:00 Esmana L~ Requ~
## 4 7 Create Pur~ 2011-01-01 13:05:00 2011-01-01 14:00:00 Esmana L~ Requ~
## 5 8 Create Pur~ 2011-01-01 13:27:00 2011-01-01 14:17:00 Fjodor K~ Requ~
## 6 10 Create Pur~ 2011-01-02 01:52:00 2011-01-02 02:43:00 Esmana L~ Requ~
## 7 12 Create Pur~ 2011-01-02 04:31:00 2011-01-02 04:41:00 Alberto ~ Requ~
## 8 13 Create Pur~ 2011-01-02 06:47:00 2011-01-02 07:06:00 Anna Kau~ Requ~
## 9 16 Create Pur~ 2011-01-02 18:25:00 2011-01-02 19:14:00 Esmana L~ Requ~
## 10 17 Create Pur~ 2011-01-02 18:32:00 2011-01-02 19:17:00 Anne Olw~ Requ~
## # ... with 395 more rows
ordered <- filtered[order(as.POSIXct(filtered$`Start Time`), decreasing = FALSE),]
ordered## # A tibble: 405 x 6
## `Case ID` Activity `Start Time` `End Time` Resource Role
## <dbl> <chr> <dttm> <dttm> <chr> <chr>
## 1 1 Create Pur~ 2010-12-31 23:00:00 2010-12-31 23:37:00 Kim Passa Requ~
## 2 4 Create Pur~ 2011-01-01 07:39:00 2011-01-01 08:00:00 Fjodor K~ Requ~
## 3 5 Create Pur~ 2011-01-01 08:49:00 2011-01-01 09:35:00 Esmana L~ Requ~
## 4 7 Create Pur~ 2011-01-01 13:05:00 2011-01-01 14:00:00 Esmana L~ Requ~
## 5 8 Create Pur~ 2011-01-01 13:27:00 2011-01-01 14:17:00 Fjodor K~ Requ~
## 6 10 Create Pur~ 2011-01-02 01:52:00 2011-01-02 02:43:00 Esmana L~ Requ~
## 7 12 Create Pur~ 2011-01-02 04:31:00 2011-01-02 04:41:00 Alberto ~ Requ~
## 8 13 Create Pur~ 2011-01-02 06:47:00 2011-01-02 07:06:00 Anna Kau~ Requ~
## 9 16 Create Pur~ 2011-01-02 18:25:00 2011-01-02 19:14:00 Esmana L~ Requ~
## 10 17 Create Pur~ 2011-01-02 18:32:00 2011-01-02 19:17:00 Anne Olw~ Requ~
## # ... with 395 more rows
ordered <- data.table(ordered)
instances <- ordered[, Interval := difftime(as.POSIXct(ordered$`Start Time`), shift(as.POSIXct(ordered$`Start Time`), fill=ordered$`Start Time`[1L]), units="mins")]
instances <- instances[-c(1),]
instances## Case ID Activity Start Time
## 1: 4 Create Purchase Requisition 2011-01-01 07:39:00
## 2: 5 Create Purchase Requisition 2011-01-01 08:49:00
## 3: 7 Create Purchase Requisition 2011-01-01 13:05:00
## 4: 8 Create Purchase Requisition 2011-01-01 13:27:00
## 5: 10 Create Purchase Requisition 2011-01-02 01:52:00
## ---
## 400: 1917 Create Purchase Requisition 2011-10-08 20:07:00
## 401: 1920 Create Purchase Requisition 2011-10-09 03:59:00
## 402: 1929 Create Purchase Requisition 2011-10-09 22:27:00
## 403: 1938 Create Purchase Requisition 2011-10-11 13:48:00
## 404: 1949 Create Purchase Requisition 2011-10-13 05:27:00
## End Time Resource Role Interval
## 1: 2011-01-01 08:00:00 Fjodor Kowalski Requester 519 mins
## 2: 2011-01-01 09:35:00 Esmana Liubiata Requester 70 mins
## 3: 2011-01-01 14:00:00 Esmana Liubiata Requester 256 mins
## 4: 2011-01-01 14:17:00 Fjodor Kowalski Requester 22 mins
## 5: 2011-01-02 02:43:00 Esmana Liubiata Requester 745 mins
## ---
## 400: 2011-10-08 20:23:00 Miu Hanwan Requester 2247 mins
## 401: 2011-10-09 04:07:00 Penn Osterwalder Requester 472 mins
## 402: 2011-10-09 23:20:00 Elvira Lores Requester 1108 mins
## 403: 2011-10-11 14:08:00 Clement Duchot Requester 2361 mins
## 404: 2011-10-13 06:21:00 Tesca Lobes Requester 2379 mins
summary(as.numeric(instances$Interval))## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.0 216.5 498.5 1016.7 1109.2 12248.0
sd(as.numeric(instances$Interval)) #Standard Deviation## [1] 1540.984
var(as.numeric(instances$Interval)) #Variance## [1] 2374630
dataset[['Elapsed Time']] <- as.difftime(difftime(dataset[['End Time']], dataset[['Start Time']], units="mins"))
model <- dataset
datasetActivities <- dataset
datasetActivities[,-c(1)][datasetActivities[,-c(1)]==0] <- NA
datasetActivities <- datasetActivities[complete.cases(datasetActivities),]
datasetActivities #[,c(1:6,7)] #Note: Viewing only some columns with changed order## # A tibble: 5,363 x 7
## `Case ID` Activity `Start Time` `End Time` Resource Role
## <dbl> <chr> <dttm> <dttm> <chr> <chr>
## 1 1 Create Pur~ 2010-12-31 23:00:00 2010-12-31 23:37:00 Kim Passa Requ~
## 2 1 Create Req~ 2011-01-01 04:37:00 2011-01-01 04:45:00 Kim Passa Requ~
## 3 1 Analyze Re~ 2011-01-01 05:41:00 2011-01-01 05:55:00 Karel de~ Purc~
## 4 1 Send Reque~ 2011-01-01 10:43:00 2011-01-01 11:09:00 Karel de~ Purc~
## 5 1 Create Quo~ 2011-01-01 11:32:00 2011-01-01 15:03:00 Magdalen~ Purc~
## 6 1 Analyze Qu~ 2011-01-01 21:44:00 2011-01-01 22:13:00 Immanuel~ Requ~
## 7 1 Settle con~ 2011-01-02 00:22:00 2011-01-02 08:20:00 Francois~ Purc~
## 8 1 Create Pur~ 2011-01-02 08:58:00 2011-01-02 09:10:00 Karel de~ Purc~
## 9 1 Confirm Pu~ 2011-01-02 13:09:00 2011-01-02 13:43:00 Sean Man~ Supp~
## 10 1 Deliver Go~ 2011-01-02 19:49:00 2011-01-03 02:37:00 Sean Man~ Supp~
## # ... with 5,353 more rows, and 1 more variable: Elapsed Time <drtn>
summary(as.numeric(datasetActivities$`Elapsed Time`))## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.0 6.0 14.0 130.2 31.0 2944.0
sd(as.numeric(datasetActivities$`Elapsed Time`)) #Standard Deviation## [1] 387.0091
var(as.numeric(datasetActivities$`Elapsed Time`)) #Variance## [1] 149776
datasetTemp <- dataset
datasetTemp[['Start Hours']] <- as.POSIXct(strftime(datasetTemp$`Start Time`, format="%H:%M:%S"), format = "%H:%M:%S")
datasetTemp[['End Hours']] <- as.POSIXct(strftime(datasetTemp$`End Time`, format="%H:%M:%S"), format = "%H:%M:%S")
labourHours <- datasetTemp %>%
group_by(Role) %>%
summarise(
"Minimum Hour" = min(`Start Hours`, na.rm = T),
"Maximum Hour" = max(`End Hours`, na.rm = T)
) %>%
arrange(Role)
labourHours[['Min. Hour']] <- format(labourHours$`Minimum Hour`, "%H:%M:%S")
labourHours[['Max. Hour']] <- format(labourHours$`Maximum Hour`, "%H:%M:%S")
labourHours[,-c(2,3)]## # A tibble: 5 x 3
## Role `Min. Hour` `Max. Hour`
## <chr> <chr> <chr>
## 1 Financial Manager 00:01:00 23:59:00
## 2 Purchasing Agent 00:01:00 23:59:00
## 3 Requester 00:00:00 23:56:00
## 4 Requester Manager 00:00:00 23:59:00
## 5 Supplier 00:02:00 23:59:00
#par(mfrow=c(1,2))
proportion <- table(dataset$Role)/nrow(dataset)
boxplot(datasetTemp$`Start Time` ~ datasetTemp$Role, width=proportion, ylab="", xlab="Roles", las=1, cex.axis = 0.5) vioplot(as.numeric(datasetTemp$`Start Time`) ~ datasetTemp$Role, ylab="", xlab="Roles", las=1, cex.axis = 0.5, col = palette[2], horizontal = FALSE)boxplot(datasetTemp$`End Time` ~ datasetTemp$Role, width=proportion, ylab="", xlab="Roles", las=1, cex.axis = 0.5)vioplot(as.numeric(datasetTemp$`End Time`) ~ datasetTemp$Role, ylab="", xlab="Roles", las=1, cex.axis = 0.5, col = palette[2], horizontal = FALSE)instances.interval <- as.numeric(instances$Interval)
summary(instances.interval)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.0 216.5 498.5 1016.7 1109.2 12248.0
par(mfrow=c(2,2)) #Set a 2x2 matrix to plot 4 charts
hist(instances.interval, breaks = 20, main = "Histogram - Interval", xlab = "Interval")
hist(instances.interval, main = "Histogram - Interval (Zoom In)", breaks = 300, xlim = c(0,100), xlab = "Interval")
boxplot(instances.interval)
boxplot(instances.interval, ylim = c(0, 20)) #This is a scale reduced boxplotdescdist(instances.interval, discrete = FALSE)## summary statistics
## ------
## min: 3 max: 12248
## median: 498.5
## mean: 1016.651
## estimated sd: 1540.984
## estimated skewness: 3.633647
## estimated kurtosis: 19.84013
# Distributions from "stats" package: norm,lnorm,exp,pois,cauchy,gamma,logis,nbinom,
# geom, beta,weibull
# Distributions from "actuar" package: invgamma,llogis,invweibull,pareto1,pareto
distribution <- fitdist(instances.interval, "norm")
plot(distribution)activities.duration <- st(dataset, group = "Activity", vars=c("Elapsed Time"), group.long= TRUE, out = "return")
activities.duration## Variable N Mean
## 1 Activity: Amend Purchase Requisition
## 2 Elapsed Time 6 28.167
## 3
## 4 Activity: Amend Request for Quotation Requester
## 5 Elapsed Time 355 9.859
## 6
## 7 Activity: Amend Request for Quotation Requester Manager
## 8 Elapsed Time 30 19.1
## 9
## 10 Activity: Analyze Purchase Requisition
## 11 Elapsed Time 251 6.486
## 12
## 13 Activity: Analyze Quotation comparison Map
## 14 Elapsed Time 283 20.166
## 15
## 16 Activity: Analyze Request for Quotation
## 17 Elapsed Time 748 23.112
## 18
## 19 Activity: Approve Purchase Order for payment
## 20 Elapsed Time 283 1
## 21
## 22 Activity: Authorize Supplier's Invoice payment
## 23 Elapsed Time 283 0
## 24
## 25 Activity: Choose best option
## 26 Elapsed Time 283 0
## 27
## 28 Activity: Confirm Purchase Order
## 29 Elapsed Time 283 20.198
## 30
## 31 Activity: Create Purchase Order
## 32 Elapsed Time 283 9.622
## 33
## 34 Activity: Create Purchase Requisition
## 35 Elapsed Time 405 30.896
## 36
## 37 Activity: Create Quotation comparison Map
## 38 Elapsed Time 283 204.576
## 39
## 40 Activity: Create Request for Quotation Requester
## 41 Elapsed Time 160 9.7
## 42
## 43 Activity: Create Request for Quotation Requester Manager
## 44 Elapsed Time 203 1.99
## 45
## 46 Activity: Deliver Goods Services
## 47 Elapsed Time 283 1456.837
## 48
## 49 Activity: Pay invoice
## 50 Elapsed Time 283 9.29
## 51
## 52 Activity: Release Purchase Order
## 53 Elapsed Time 305 1
## 54
## 55 Activity: Release Supplier's Invoice
## 56 Elapsed Time 275 4.469
## 57
## 58 Activity: Send invoice
## 59 Elapsed Time 283 0
## 60
## 61 Activity: Send Request for Quotation to Supplier
## 62 Elapsed Time 283 23.155
## 63
## 64 Activity: Settle conditions with supplier
## 65 Elapsed Time 283 536.664
## 66
## 67 Activity: Settle dispute with supplier Financial Manager
## 68 Elapsed Time 60 23.233
## 69
## 70 Activity: Settle dispute with supplier Purchasing Agent
## 71 Elapsed Time 22 558.455
## Std. Dev. Min Pctl. 25 Pctl. 75 Max
## 1
## 2 3.971 23 25.25 31.75 32
## 3
## 4
## 5 2.978 5 7 13 15
## 6
## 7
## 8 4.887 12 15.25 24 27
## 9
## 10
## 11 3.977 4 5 7 65
## 12
## 13
## 14 7.955 6 14 27 34
## 15
## 16
## 17 8.51 0 18 29 50
## 18
## 19
## 20 0 1 1 1 1
## 21
## 22
## 23 0 0 0 0 0
## 24
## 25
## 26 0 0 0 0 0
## 27
## 28
## 29 9.998 4 13 28 94
## 30
## 31
## 32 2.151 6 8 12 13
## 33
## 34
## 35 15.207 5 17 45 57
## 36
## 37
## 38 90.55 38 136.5 279.5 365
## 39
## 40
## 41 2.298 4 8 11 16
## 42
## 43
## 44 0.704 1 1.5 2 3
## 45
## 46
## 47 796.874 183 776.5 2149.5 2944
## 48
## 49
## 50 3.078 4 7 12 15
## 51
## 52
## 53 0 1 1 1 1
## 54
## 55
## 56 1.461 2 3 6 7
## 57
## 58
## 59 0 0 0 0 0
## 60
## 61
## 62 7.83 1 18 27 88
## 63
## 64
## 65 190.877 238 365.5 710.5 879
## 66
## 67
## 68 6.573 13 17 29.25 34
## 69
## 70
## 71 24.861 523 540.5 567.5 620
activities <- unique(dataset$Activity) # Get distinct activities names## 1 : Create Purchase Requisition | 2 : Create Request for Quotation Requester | 3 : Analyze Request for Quotation |
## 4 : Send Request for Quotation to Supplier | 5 : Create Quotation comparison Map | 6 : Analyze Quotation comparison Map |
## 7 : Choose best option | 8 : Settle conditions with supplier | 9 : Create Purchase Order |
## 10 : Confirm Purchase Order | 11 : Deliver Goods Services | 12 : Release Purchase Order |
## 13 : Approve Purchase Order for payment | 14 : Send invoice | 15 : Release Supplier's Invoice |
## 16 : Authorize Supplier's Invoice payment | 17 : Pay invoice | 18 : Analyze Purchase Requisition |
## 19 : Create Request for Quotation Requester Manager | 20 : Amend Request for Quotation Requester | 21 : Settle dispute with supplier Financial Manager |
## 22 : Amend Purchase Requisition | 23 : Settle dispute with supplier Purchasing Agent | 24 : Amend Request for Quotation Requester Manager |
uniqueActivities = data.frame(ID=character(), Activity=character(), Value=integer())
#colnames(uniformActivities) <- c("ID", "Name", "Value")
for(i in 1:length(activities)) {
activity <- filter(dataset, Activity == activities[i])
if ( length(unique(activity$`Elapsed Time`)) == 1) { uniqueActivities <- rbind(uniqueActivities, data.frame(ID=i, Activity=activities[i],Value=unique(activity$`Elapsed Time`))); cat("\n", "Activity - ",i," : " ,activities[i],"with uniform value of : ", unique(activity$`Elapsed Time`),"\n"); next; }
descdist(as.numeric(activity$`Elapsed Time`), discrete = FALSE, graph = TRUE)
cat("\n", "Activity - ",i," : " , activities[i], "\n")
}##
## Activity - 1 : Create Purchase Requisition
##
## Activity - 2 : Create Request for Quotation Requester
##
## Activity - 3 : Analyze Request for Quotation
##
## Activity - 4 : Send Request for Quotation to Supplier
##
## Activity - 5 : Create Quotation comparison Map
##
## Activity - 6 : Analyze Quotation comparison Map
##
## Activity - 7 : Choose best option with uniform value of : 0
##
## Activity - 8 : Settle conditions with supplier
##
## Activity - 9 : Create Purchase Order
##
## Activity - 10 : Confirm Purchase Order
##
## Activity - 11 : Deliver Goods Services
##
## Activity - 12 : Release Purchase Order with uniform value of : 1
##
## Activity - 13 : Approve Purchase Order for payment with uniform value of : 1
##
## Activity - 14 : Send invoice with uniform value of : 0
##
## Activity - 15 : Release Supplier's Invoice
##
## Activity - 16 : Authorize Supplier's Invoice payment with uniform value of : 0
##
## Activity - 17 : Pay invoice
##
## Activity - 18 : Analyze Purchase Requisition
##
## Activity - 19 : Create Request for Quotation Requester Manager
##
## Activity - 20 : Amend Request for Quotation Requester
##
## Activity - 21 : Settle dispute with supplier Financial Manager
##
## Activity - 22 : Amend Purchase Requisition
##
## Activity - 23 : Settle dispute with supplier Purchasing Agent
##
## Activity - 24 : Amend Request for Quotation Requester Manager
uniqueActivities## ID Activity Value
## 1 7 Choose best option 0
## 2 12 Release Purchase Order 1
## 3 13 Approve Purchase Order for payment 1
## 4 14 Send invoice 0
## 5 16 Authorize Supplier's Invoice payment 0
##
## Activity - Create Purchase Requisition
# Distributions from "stats" package: norm,lnorm,exp,pois,cauchy,gamma,logis,nbinom,
# geom,beta,weibull
# Distributions from "actuar" package: invgamma,llogis,invweibull,pareto1,pareto
# The potential distribution was obtained in previous step. eg: norm, exp, etc
# Repeat below 3 lines per each activity name/index trying a corresponding distribution
activity <- filter(dataset, Activity == activities[1]) # Activity index 1
distribution <- fitdist(as.numeric(activity$`Elapsed Time`), "exp")
plot(distribution)
##
## Activity - Create Request for Quotation Requester
# Distributions from "stats" package: norm,lnorm,exp,pois,cauchy,gamma,logis,nbinom,
# geom,beta,weibull
# Distributions from "actuar" package: invgamma,llogis,invweibull,pareto1,pareto
# The potential distribution was obtained in previous step. eg: norm, exp, etc
# Repeat below 3 lines per each activity name/index trying a corresponding distribution
activity <- filter(dataset, Activity == activities[4]) # Activity index 4
distribution <- fitdist(as.numeric(activity$`Elapsed Time`), "norm")
plot(distribution)set.seed(1)
par(mfrow=plot.matrix)
sample.dataset <- rnorm(observations, mean = 0, sd = 1)
summary(sample.dataset)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -3.671300 -0.669355 -0.015493 -0.003188 0.697524 3.810277
hist(sample.dataset, main = "Histogram (Frequency)", breaks = bins.break, col = palette[1])
hist(sample.dataset, main = "Histogram (Density)", breaks = bins.break, col = palette[2], freq = FALSE)
lines(density(sample.dataset), lw = line.width, col = palette[3])
vioplot(sample.dataset, col = palette[2], horizontal = TRUE)
plot(density(sample.dataset), type="n", main ="")
polygon(density(sample.dataset), col=palette[4], border=palette[3])
rug(sample.dataset, col=palette[1])set.seed(1)
par(mfrow=plot.matrix)
sample.dataset <- rexp(observations, rate = 1)
summary(sample.dataset)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000473 0.285721 0.701099 1.012070 1.379185 9.184451
hist(sample.dataset, main = "Histogram (Frequency)", breaks = bins.break, col = palette[1])
hist(sample.dataset, main = "Histogram (Density)", breaks = bins.break, col = palette[2], freq = FALSE)
lines(density(sample.dataset), lw = line.width, col = palette[3])
vioplot(sample.dataset, col = palette[2], horizontal = TRUE)
plot(density(sample.dataset), type="n", main ="")
polygon(density(sample.dataset), col=palette[4], border=palette[3])
rug(sample.dataset, col=palette[1])set.seed(1)
par(mfrow=plot.matrix)
sample.dataset <- rchisq(observations, df = 5)
summary(sample.dataset)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.126 2.688 4.354 5.033 6.738 23.181
hist(sample.dataset, main = "Histogram (Frequency)", breaks = bins.break, col = palette[1])
hist(sample.dataset, main = "Histogram (Density)", breaks = bins.break, col = palette[2], freq = FALSE)
lines(density(sample.dataset), lw = line.width, col = palette[3])
vioplot(sample.dataset, col = palette[2], horizontal = TRUE)
plot(density(sample.dataset), type="n", main ="")
polygon(density(sample.dataset), col=palette[4], border=palette[3])
rug(sample.dataset, col=palette[1])set.seed(1)
par(mfrow=plot.matrix)
sample.dataset <- rlogis(observations)
summary(sample.dataset)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -8.51509 -1.13675 -0.04549 -0.01524 1.16167 9.57546
hist(sample.dataset, main = "Histogram (Frequency)", breaks = bins.break, col = palette[1])
hist(sample.dataset, main = "Histogram (Density)", breaks = bins.break, col = palette[2], freq = FALSE)
lines(density(sample.dataset), lw = line.width, col = palette[3])
vioplot(sample.dataset, col = palette[2], horizontal = TRUE)
plot(density(sample.dataset), type="n", main ="")
polygon(density(sample.dataset), col=palette[4], border=palette[3])
rug(sample.dataset, col=palette[1])set.seed(1)
par(mfrow=plot.matrix)
sample.dataset <- rpois(observations, lambda = 15)
summary(sample.dataset)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.00 12.00 15.00 15.03 18.00 35.00
hist(sample.dataset, main = "Histogram (Frequency)", breaks = bins.break, col = palette[1])
hist(sample.dataset, main = "Histogram (Density)", breaks = bins.break, col = palette[2], freq = FALSE)
lines(density(sample.dataset), lw = line.width, col = palette[3])
vioplot(sample.dataset, col = palette[2], horizontal = TRUE)
plot(density(sample.dataset), type="n", main ="")
polygon(density(sample.dataset), col=palette[4], border=palette[3])
rug(sample.dataset, col=palette[1])set.seed(1)
par(mfrow=plot.matrix)
sample.dataset <- rt(observations, df = 10)
summary(sample.dataset)## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -4.89708 -0.68148 0.01846 0.02314 0.71075 5.43763
hist(sample.dataset, main = "Histogram (Frequency)", breaks = bins.break, col = palette[1])
hist(sample.dataset, main = "Histogram (Density)", breaks = bins.break, col = palette[2], freq = FALSE)
lines(density(sample.dataset), lw = line.width, col = palette[3])
vioplot(sample.dataset, col = palette[2], horizontal = TRUE)
plot(density(sample.dataset), type="n", main ="")
polygon(density(sample.dataset), col=palette[4], border=palette[3])
rug(sample.dataset, col=palette[1])include.in.render <- TRUE # Change this to FALSE to export to pdf (Knit to Pdf)
events <- model %>% #a data.frame with the information in the table above
mutate(Status = "complete",
Activity_Instance = 1:nrow(.)) %>%
eventlog(
case_id = "Case ID",
activity_id = "Activity",
activity_instance_id = "Activity_Instance",
lifecycle_id = "Status",
timestamp = "Start Time",
resource_id = "Resource"
)events %>% process_map(type = frequency("relative"), layout = layout_pm(fixed_positions = TRUE))events %>% process_map(performance(mean, "hours"))events %>% precedence_matrix(type = "absolute")## # A tibble: 35 x 3
## antecedent consequent n
## <fct> <fct> <int>
## 1 Amend Purchase Requisition Create Request for Quot~ 1
## 2 Analyze Purchase Requisition Amend Purchase Requisit~ 6
## 3 Amend Purchase Requisition Analyze Purchase Requis~ 5
## 4 Release Purchase Order Settle dispute with sup~ 22
## 5 Amend Request for Quotation Requester Manager Analyze Request for Quo~ 30
## 6 Analyze Request for Quotation Amend Request for Quota~ 355
## 7 Analyze Purchase Requisition Create Request for Quot~ 203
## 8 Settle dispute with supplier Financial Manager Authorize Supplier's In~ 60
## 9 Release Supplier's Invoice Settle dispute with sup~ 60
## 10 Analyze Request for Quotation Amend Request for Quota~ 30
## # ... with 25 more rows
events %>% precedence_matrix(type = "absolute") %>% plot#events %>% resource_map()
animate_process(events, mode = "relative", jitter = 10, legend = "color",
mapping = token_aes(size = token_scale(3), color = token_scale("Credit Request Cases/Instances", scale = "ordinal",
range = RColorBrewer::brewer.pal(12, "Paired"))))Invited Assistant Professor. https://ciencia.iscte-iul.pt/authors/joao-caldeira/cv↩︎
Associate Professor. https://ciencia.iscte-iul.pt/authors/fernando-brito-e-abreu/↩︎